package job;

import java.util.HashMap;

/** Represente une piece du jeu */
public class RotPiece {
	/** Contient les blocks indexé par leurs positions x,y
	 * parsé en String 'x,y' dans la hastable */
	private HashMap<String,Block> blocksPos;
	/** Liste doublement chainee circulaire permettant de 
	 * connaitre la rotation suivante et precedente d'une piece **/
	private RotPiece prevRot;
	private RotPiece nextRot;
	public RotPiece() {
		blocksPos = new HashMap<String,Block>();
		prevRot = this;
		nextRot = this;
	}
	public RotPiece(int[] x, int[] y, int color) {
		this();
		addBlocks(x, y, color);
	}
	/** Ajoute une block en x,y de couleur=color */
	public void addBloc(int x, int y, int color) {
		blocksPos.put(x+","+y, new Block(color));
		
	}
	/** Retourne le block a la position x,y */
	public Block getBlock(int x, int y) {
		return blocksPos.get(x+","+y);
	}
	public void addBlocks(int[] x, int[] y, int color) {
		for(int i=0; i<x.length; i++) {
			this.addBloc(x[i], y[i], color);
		}
	}
	/** Y a t'il un block a la position x,y ? */
	public boolean isEmpty(int x, int y) {
		if(blocksPos.get(x+","+y) == null)
			return true;
		return false;
	}
	public RotPiece getNextRot() {
		return nextRot;
	}
	public RotPiece getPrevRot() {
		return prevRot;
	}
	/**
	* Permet de  designer la rotation precedente et suivante d'une piece
	* @param prev Piece representant la rotation precedente
	* @param next Piece representant la rotation suivante
	*/
	public void setPrevRotAndNextRot(RotPiece prev, RotPiece next) {
		prevRot = prev;
		nextRot = next;
	}
}
